home *** CD-ROM | disk | FTP | other *** search
- ;* PEEK.ASM
- ;************************************************************************
- ;* *
- ;* PC Scheme/Geneva 4.00 Borland TASM code *
- ;* *
- ;* (c) 1985-1988 by Texas Instruments, Inc. See COPYRIGHT.TXT *
- ;* (c) 1992 by L. Bartholdi & M. Vuilleumier, University of Geneva *
- ;* *
- ;*----------------------------------------------------------------------*
- ;* *
- ;* Direct memory peek & poke, hardware input/output *
- ;* *
- ;*----------------------------------------------------------------------*
- ;* *
- ;* Created by: Larry Bartholdi Date: 1992 *
- ;* Revision history: *
- ;* - 18 Jun 92: Renaissance (Borland Compilers, ...) *
- ;* *
- ;* ``In nomine omnipotentii dei'' *
- ;************************************************************************
- IDEAL
- INCLUDE "inline.ash"
- startinline PEEKBYTE, 1
- lea ax, [reg1]
- call int2long C, ax
- mov cl, 0ch
- shl dx, cl
- jnc @@noA20
- mov dx, 0ffffh
- add ax, 10h
- @@noA20:
- mov es, dx
- mov bx, ax
- mov al, [es:bx]
- mov ah, 0
- cwd
- lea bx, [reg1]
- call long2int C, bx, ax, dx
- ret
- endinline
- startinline POKEBYTE, 2
- lea ax, [reg2]
- call int2long C, ax
- push ax
- lea ax, [reg1]
- call int2long C, ax
- mov cl, 0ch
- shl dx, cl
- jnc @@noA20
- mov dx, 0ffffh
- add ax, 10h
- @@noA20:
- mov es, dx
- mov bx, ax
- pop ax
- xchg al, [es:bx]
- mov ah, 0
- cwd
- lea bx, [reg1]
- call long2int C, bx, ax, dx
- ret
- endinline
- startinline INBYTE, 1
- mov dx, [reg1.disp]
- in al, dx
- mov ah, 0
- mov [reg1.disp], ax
- ret
- endinline
- startinline INWORD, 1
- mov dx, [reg1.disp]
- in ax, dx
- mov [reg1.disp], ax
- ret
- endinline
- startinline OUTBYTE, 2
- mov dx, [reg1.disp]
- mov al, [BYTE reg2.disp]
- out dx, al
- ret
- endinline
- startinline OUTWORD, 2
- mov dx, [reg1.disp]
- mov ax, [reg2.disp]
- out dx, ax
- ret
- endinline
- END